home *** CD-ROM | disk | FTP | other *** search
/ Cracking 2 / Cracking II..iso / Tools / ApiHooks 2.2 / examples / VC / CapConsoleAlt.c next >
Encoding:
C/C++ Source or Header  |  2000-04-09  |  2.1 KB  |  69 lines

  1. #if _MSC_VER > 1000
  2. #pragma once
  3. #endif
  4.  
  5. #define WIN32_LEAN_AND_MEAN
  6.  
  7. #include <windows.h>
  8. #include "ApiHooks.h"
  9.  
  10.  
  11. HANDLE hLog = INVALID_HANDLE_VALUE;
  12.  
  13.  
  14.  
  15. ADDR_CONTENTS AddrAndValue[3];
  16. API_UNHOOK UnhookWriteConsoleA = {3,0,AddrAndValue};
  17.  
  18.  
  19. void HookApis();
  20.  
  21. HANDLE ExcludeModules[3] = {0,0,0};
  22.  
  23. void LibTest() {
  24.      LoadAndCall("KERNEL32.DLL",GetCurrentProcessId(), 1, NULL);
  25.      UnloadModule("KERNEL32.DLL",GetCurrentProcessId(), 1);
  26. }
  27.  
  28.  
  29. BOOL APIENTRY DllMain( HANDLE hModule, 
  30.                        DWORD  ul_reason_for_call, 
  31.                        LPVOID lpReserved)
  32. {   
  33.     switch (ul_reason_for_call) 
  34.        {   case DLL_PROCESS_ATTACH:
  35.             if(hLog == INVALID_HANDLE_VALUE)
  36.                          hLog = CreateFile("console.log", GENERIC_WRITE, FILE_SHARE_READ,
  37.                          NULL, CREATE_ALWAYS, 0, NULL);
  38.             ExcludeModules[0] = hModule;
  39.             ExcludeModules[1] = GetModuleHandle("MSVCRT.DLL");
  40.             HookApis();
  41.                  break;
  42.         case DLL_PROCESS_DETACH:
  43.                          CloseHandle(hLog);
  44.              hLog = INVALID_HANDLE_VALUE;
  45.                          LibTest();
  46.                break;
  47.     }
  48.     return TRUE;
  49. }
  50.  
  51.  
  52. BOOL WINAPI NewWriteConsoleA(HANDLE hConOut, LPCVOID lpvBuffer, DWORD cchToWrite, LPDWORD lpcchWritten, LPOVERLAPPED lpvReserved) {              
  53.       WriteFile(hLog, lpvBuffer, cchToWrite, lpcchWritten, NULL);
  54.       return(WriteConsoleA(hConOut, lpvBuffer, cchToWrite,lpcchWritten, lpvReserved));
  55. }
  56.  
  57.  
  58. FARPROC WINAPI NewGetProcAddress(HMODULE hModule, LPCSTR lpProcName) {
  59.      if(hModule == GetModuleHandle("KERNEL32.DLL"))    { 
  60.       if(!lstrcmp(lpProcName, "WriteConsoleA"))  return((FARPROC)NewWriteConsoleA);
  61.       if(!lstrcmp(lpProcName, "GetProcAddress")) return((FARPROC)NewGetProcAddress);
  62.      }
  63.      return(GetProcAddress(hModule, lpProcName));
  64. }
  65.  
  66. void HookApis() {
  67.     DWORD result = HookApi("KERNEL32.DLL","WriteConsoleA", HOOK_ALL, ALL_MODULES, &UnhookWriteConsoleA, NewWriteConsoleA,  ExcludeModules);
  68.           result|= HookApi("KERNEL32.DLL","GetProcAddress",HOOK_ALL, ALL_MODULES, NULL,                 NewGetProcAddress, NULL);
  69. }